home *** CD-ROM | disk | FTP | other *** search
- /* console.c */
-
- /* Copyright © 1989 by Donald T. Meyer, Stormgate Software
- * All Rights Reserved
- */
-
-
-
- #include "rxil.h"
-
- #include <libraries/dos.h>
-
- #include <proto/dos.h>
-
-
-
- /* NAME
- * RxilOpenConsole
- *
- * SYNOPSIS
- * RxilOpenConsole( console, rexxmsg );
- *
- * char *console;
- * struct RexxMsg *rexxmsg;
- *
- * FUNCTION
- * This will open an AmigaDOS stream as specified by the console
- * string. The filehandle is then placed in the rm_Stdin and
- * rm_Stdout fields of the RexxMsg.
- *
- * INPUTS
- * console = a string which defines the console stream to be opened.
- * This will normally be something like "CON:0/0/400/100/".
- * rexxmsg = pointer to the RexxMsg that the AmigaDOS file handles
- * are to be set into.
- *
- * RESULT
- * None
- *
- * SIDES
- *
- * HISTORY
- * 01-Aug-89 Creation.
- *
- * BUGS
- *
- * SEE ALSO
- * RxilCloseConsole()
- */
-
- void RxilOpenConsole( char *console, struct RexxMsg *rexxmsg )
- {
- struct FileHandle *fh;
-
-
- fh = (struct Filehandle *)Open( console, MODE_NEWFILE );
- if( fh == NULL )
- {
- return;
- }
-
- rexxmsg->rm_Stdin = (LONG)fh;
- rexxmsg->rm_Stdout = (LONG)fh;
- }
-
-
-
- /* NAME
- * RxilCloseConsole
- *
- * SYNOPSIS
- * RxilCloseConsole( rexxmsg )
- *
- * struct RexxMsg *rexxmsg;
- *
- * FUNCTION
- * This will close the AmigaDOS file handles contained in the
- * rm_Stdin and rm_Stdout fields of the RexxMsg. If the handles
- * are the same, only one close is performed.
- * This clears the fields. If the fields are NULL, then no action
- * is taken.
- * This function supports the rm_Stdin and rm_Stdout being seperate
- * handles, even though it's complimentary function,
- * RxilOpenConsole() does not do this.
- *
- * INPUTS
- * rexxmsg = pointer to the RexxMsg whose IO streams are to be
- * closed.
- *
- * RESULT
- * None
- *
- * SIDES
- *
- * HISTORY
- * 01-Aug-89 Creation.
- *
- * BUGS
- *
- * SEE ALSO
- * RxilOpenConsole()
- */
-
- void RxilCloseConsole( struct RexxMsg *rexxmsg )
- {
- if( ( rexxmsg->rm_Stdin == NULL ) && ( rexxmsg->rm_Stdout == NULL ) )
- {
- /* Nothing to close */
- return;
- }
-
-
- /* There is something to close */
-
- if( rexxmsg->rm_Stdin == rexxmsg->rm_Stdout )
- {
- /* File handles are the same, only close once! */
- rexxmsg->rm_Stdout = NULL;
- }
-
- /* Close file handles individualy */
- if( rexxmsg->rm_Stdin )
- {
- Close( rexxmsg->rm_Stdin );
- rexxmsg->rm_Stdin = NULL;
- }
-
- if( rexxmsg->rm_Stdout )
- {
- Close( rexxmsg->rm_Stdout );
- rexxmsg->rm_Stdout = NULL;
- }
- }
-
-